#include "link.h"
//创建
Pliink create()
{
	Pliink p=malloc(sizeof(liink));
	if(p==NULL)
	{
		printf("创建失败\n");
		return NULL;
	}
	p->len=0;
	p->front=NULL;
	p->rear=NULL;
	printf("创建成功\n");
	return p;
}
//入队
int enqueu(Pliink p,int e)
{
	if(p==NULL)
	{
		printf("入队失败\n");
		return -1;
	}
	Pstud t=malloc(sizeof(stud));
	t->data=e;
	t->next=NULL;
	if(p->rear==NULL)
	{
		p->rear=t;
		p->front=t;
		p->len++;
	}
	else
	{
		p->rear->next=t;
		p->rear=t;
		p->len++;
	}
	printf("插入成功\n");
	return 0;
}
//出队
int outqueue(Pliink p)
{
	if(p==NULL || p->rear==NULL)
	{
		printf("队空,出队失败\n");
		return -1;
	}
	Pstud t;
	t=p->front;
	printf("出队数据为：%d\n",t->data);
	if(p->rear==p->front)
		p->front=p->rear=NULL;
	else
		p->front=t->next;
	free(t);
	t=NULL;
	p->len--;
	return 0;
}
//遍历
void output(Pliink p)
{
	if(p==NULL || p->rear==NULL)
	{
		printf("队链异常，遍历失败\n");
		return;
	}
	Pstud t=p->front;
	while(t!=NULL)
	{
		printf("遍历输出：%d\n",t->data);
		t=t->next;
	}
	return;
}
void output2(Pliink p)
{
	if(p==NULL || p->rear==NULL)
	{
		printf("链队异常，遍历失败\n");
		return;
	}
	Pstud t=p->front;
	for(int i=0;i<p->len;i++)
	{
		printf("第%d个节点的数据为：%d\n",i+1,t->data);
		t=t->next;
	}
	return;
}
